package abs.dao;

import abs.domain.TipoCuentas;

import java.util.Arrays;
import java.util.HashSet;
import java.util.LinkedHashSet;
import java.util.Set;

import javax.persistence.EntityManager;
import javax.persistence.NoResultException;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;

import org.skyway.spring.util.dao.AbstractJpaDao;

import org.springframework.dao.DataAccessException;

import org.springframework.stereotype.Repository;

import org.springframework.transaction.annotation.Transactional;

/**
 * DAO to manage TipoCuentas entities.
 * 
 */
@Repository("TipoCuentasDAO")
@Transactional
public class TipoCuentasDAOImpl extends AbstractJpaDao<TipoCuentas> implements
		TipoCuentasDAO {

	/**
	 * Set of entity classes managed by this DAO.  Typically a DAO manages a single entity.
	 *
	 */
	private final static Set<Class<?>> dataTypes = new HashSet<Class<?>>(Arrays.asList(new Class<?>[] { TipoCuentas.class }));

	/**
	 * EntityManager injected by Spring for persistence unit absV2
	 *
	 */
	@PersistenceContext(unitName = "absV2")
	private EntityManager entityManager;

	/**
	 * Instantiates a new TipoCuentasDAOImpl
	 *
	 */
	public TipoCuentasDAOImpl() {
		super();
	}

	/**
	 * Get the entity manager that manages persistence unit 
	 *
	 */
	@Override
	public EntityManager getEntityManager() {
		return entityManager;
	}

	/**
	 * Returns the set of entity classes managed by this DAO.
	 *
	 */
	@Override
	public Set<Class<?>> getTypes() {
		return dataTypes;
	}

	/**
	 * JPQL Query - findTipoCuentasByCo020timo
	 *
	 */
	@Override
	@Transactional
	public Set<TipoCuentas> findTipoCuentasByCo020timo(String co020timo) throws DataAccessException {

		return findTipoCuentasByCo020timo(co020timo, -1, -1);
	}

	/**
	 * JPQL Query - findTipoCuentasByCo020timo
	 *
	 */

	@Override
	@SuppressWarnings("unchecked")
	@Transactional
	public Set<TipoCuentas> findTipoCuentasByCo020timo(String co020timo, int startResult, int maxRows) throws DataAccessException {
		Query query = createNamedQuery("findTipoCuentasByCo020timo", startResult, maxRows, co020timo);
		return new LinkedHashSet<TipoCuentas>(query.getResultList());
	}

	/**
	 * JPQL Query - findTipoCuentasByCo020feadAfter
	 *
	 */
	@Override
	@Transactional
	public Set<TipoCuentas> findTipoCuentasByCo020feadAfter(java.util.Calendar co020fead) throws DataAccessException {

		return findTipoCuentasByCo020feadAfter(co020fead, -1, -1);
	}

	/**
	 * JPQL Query - findTipoCuentasByCo020feadAfter
	 *
	 */

	@Override
	@SuppressWarnings("unchecked")
	@Transactional
	public Set<TipoCuentas> findTipoCuentasByCo020feadAfter(java.util.Calendar co020fead, int startResult, int maxRows) throws DataAccessException {
		Query query = createNamedQuery("findTipoCuentasByCo020feadAfter", startResult, maxRows, co020fead);
		return new LinkedHashSet<TipoCuentas>(query.getResultList());
	}

	/**
	 * JPQL Query - findTipoCuentasByCo020tipo
	 *
	 */
	@Override
	@Transactional
	public TipoCuentas findTipoCuentasByCo020tipo(String co020tipo) throws DataAccessException {

		return findTipoCuentasByCo020tipo(co020tipo, -1, -1);
	}

	/**
	 * JPQL Query - findTipoCuentasByCo020tipo
	 *
	 */

	@Override
	@Transactional
	public TipoCuentas findTipoCuentasByCo020tipo(String co020tipo, int startResult, int maxRows) throws DataAccessException {
		try {
			Query query = createNamedQuery("findTipoCuentasByCo020tipo", startResult, maxRows, co020tipo);
			return (abs.domain.TipoCuentas) query.getSingleResult();
		} catch (NoResultException nre) {
			return null;
		}
	}

	/**
	 * JPQL Query - findTipoCuentasByCo020lomoContaining
	 *
	 */
	@Override
	@Transactional
	public Set<TipoCuentas> findTipoCuentasByCo020lomoContaining(String co020lomo) throws DataAccessException {

		return findTipoCuentasByCo020lomoContaining(co020lomo, -1, -1);
	}

	/**
	 * JPQL Query - findTipoCuentasByCo020lomoContaining
	 *
	 */

	@Override
	@SuppressWarnings("unchecked")
	@Transactional
	public Set<TipoCuentas> findTipoCuentasByCo020lomoContaining(String co020lomo, int startResult, int maxRows) throws DataAccessException {
		Query query = createNamedQuery("findTipoCuentasByCo020lomoContaining", startResult, maxRows, co020lomo);
		return new LinkedHashSet<TipoCuentas>(query.getResultList());
	}

	/**
	 * JPQL Query - findTipoCuentasByCo020femo
	 *
	 */
	@Override
	@Transactional
	public Set<TipoCuentas> findTipoCuentasByCo020femo(java.util.Calendar co020femo) throws DataAccessException {

		return findTipoCuentasByCo020femo(co020femo, -1, -1);
	}

	/**
	 * JPQL Query - findTipoCuentasByCo020femo
	 *
	 */

	@Override
	@SuppressWarnings("unchecked")
	@Transactional
	public Set<TipoCuentas> findTipoCuentasByCo020femo(java.util.Calendar co020femo, int startResult, int maxRows) throws DataAccessException {
		Query query = createNamedQuery("findTipoCuentasByCo020femo", startResult, maxRows, co020femo);
		return new LinkedHashSet<TipoCuentas>(query.getResultList());
	}

	/**
	 * JPQL Query - findTipoCuentasByCo020lomo
	 *
	 */
	@Override
	@Transactional
	public Set<TipoCuentas> findTipoCuentasByCo020lomo(String co020lomo) throws DataAccessException {

		return findTipoCuentasByCo020lomo(co020lomo, -1, -1);
	}

	/**
	 * JPQL Query - findTipoCuentasByCo020lomo
	 *
	 */

	@Override
	@SuppressWarnings("unchecked")
	@Transactional
	public Set<TipoCuentas> findTipoCuentasByCo020lomo(String co020lomo, int startResult, int maxRows) throws DataAccessException {
		Query query = createNamedQuery("findTipoCuentasByCo020lomo", startResult, maxRows, co020lomo);
		return new LinkedHashSet<TipoCuentas>(query.getResultList());
	}

	/**
	 * JPQL Query - findTipoCuentasByCo020clcu
	 *
	 */
	@Override
	@Transactional
	public Set<TipoCuentas> findTipoCuentasByCo020clcu(String co020clcu) throws DataAccessException {

		return findTipoCuentasByCo020clcu(co020clcu, -1, -1);
	}

	/**
	 * JPQL Query - findTipoCuentasByCo020clcu
	 *
	 */

	@Override
	@SuppressWarnings("unchecked")
	@Transactional
	public Set<TipoCuentas> findTipoCuentasByCo020clcu(String co020clcu, int startResult, int maxRows) throws DataAccessException {
		Query query = createNamedQuery("findTipoCuentasByCo020clcu", startResult, maxRows, co020clcu);
		return new LinkedHashSet<TipoCuentas>(query.getResultList());
	}

	/**
	 * JPQL Query - findTipoCuentasByCo020descContaining
	 *
	 */
	@Override
	@Transactional
	public Set<TipoCuentas> findTipoCuentasByCo020descContaining(String co020desc) throws DataAccessException {

		return findTipoCuentasByCo020descContaining(co020desc, -1, -1);
	}

	/**
	 * JPQL Query - findTipoCuentasByCo020descContaining
	 *
	 */

	@Override
	@SuppressWarnings("unchecked")
	@Transactional
	public Set<TipoCuentas> findTipoCuentasByCo020descContaining(String co020desc, int startResult, int maxRows) throws DataAccessException {
		Query query = createNamedQuery("findTipoCuentasByCo020descContaining", startResult, maxRows, co020desc);
		return new LinkedHashSet<TipoCuentas>(query.getResultList());
	}

	/**
	 * JPQL Query - findTipoCuentasByCo020load
	 *
	 */
	@Override
	@Transactional
	public Set<TipoCuentas> findTipoCuentasByCo020load(String co020load) throws DataAccessException {

		return findTipoCuentasByCo020load(co020load, -1, -1);
	}

	/**
	 * JPQL Query - findTipoCuentasByCo020load
	 *
	 */

	@Override
	@SuppressWarnings("unchecked")
	@Transactional
	public Set<TipoCuentas> findTipoCuentasByCo020load(String co020load, int startResult, int maxRows) throws DataAccessException {
		Query query = createNamedQuery("findTipoCuentasByCo020load", startResult, maxRows, co020load);
		return new LinkedHashSet<TipoCuentas>(query.getResultList());
	}

	/**
	 * JPQL Query - findTipoCuentasByCo020timoContaining
	 *
	 */
	@Override
	@Transactional
	public Set<TipoCuentas> findTipoCuentasByCo020timoContaining(String co020timo) throws DataAccessException {

		return findTipoCuentasByCo020timoContaining(co020timo, -1, -1);
	}

	/**
	 * JPQL Query - findTipoCuentasByCo020timoContaining
	 *
	 */

	@Override
	@SuppressWarnings("unchecked")
	@Transactional
	public Set<TipoCuentas> findTipoCuentasByCo020timoContaining(String co020timo, int startResult, int maxRows) throws DataAccessException {
		Query query = createNamedQuery("findTipoCuentasByCo020timoContaining", startResult, maxRows, co020timo);
		return new LinkedHashSet<TipoCuentas>(query.getResultList());
	}

	/**
	 * JPQL Query - findAllTipoCuentass
	 *
	 */
	@Override
	@Transactional
	public Set<TipoCuentas> findAllTipoCuentass() throws DataAccessException {

		return findAllTipoCuentass(-1, -1);
	}

	/**
	 * JPQL Query - findAllTipoCuentass
	 *
	 */

	@Override
	@SuppressWarnings("unchecked")
	@Transactional
	public Set<TipoCuentas> findAllTipoCuentass(int startResult, int maxRows) throws DataAccessException {
		Query query = createNamedQuery("findAllTipoCuentass", startResult, maxRows);
		return new LinkedHashSet<TipoCuentas>(query.getResultList());
	}

	/**
	 * JPQL Query - findTipoCuentasByCo020fead
	 *
	 */
	@Override
	@Transactional
	public Set<TipoCuentas> findTipoCuentasByCo020fead(java.util.Calendar co020fead) throws DataAccessException {

		return findTipoCuentasByCo020fead(co020fead, -1, -1);
	}

	/**
	 * JPQL Query - findTipoCuentasByCo020fead
	 *
	 */

	@Override
	@SuppressWarnings("unchecked")
	@Transactional
	public Set<TipoCuentas> findTipoCuentasByCo020fead(java.util.Calendar co020fead, int startResult, int maxRows) throws DataAccessException {
		Query query = createNamedQuery("findTipoCuentasByCo020fead", startResult, maxRows, co020fead);
		return new LinkedHashSet<TipoCuentas>(query.getResultList());
	}

	/**
	 * JPQL Query - findTipoCuentasByPrimaryKey
	 *
	 */
	@Override
	@Transactional
	public TipoCuentas findTipoCuentasByPrimaryKey(String co020tipo) throws DataAccessException {

		return findTipoCuentasByPrimaryKey(co020tipo, -1, -1);
	}

	/**
	 * JPQL Query - findTipoCuentasByPrimaryKey
	 *
	 */

	@Override
	@Transactional
	public TipoCuentas findTipoCuentasByPrimaryKey(String co020tipo, int startResult, int maxRows) throws DataAccessException {
		try {
			Query query = createNamedQuery("findTipoCuentasByPrimaryKey", startResult, maxRows, co020tipo);
			return (abs.domain.TipoCuentas) query.getSingleResult();
		} catch (NoResultException nre) {
			return null;
		}
	}

	/**
	 * JPQL Query - findTipoCuentasByCo020femoAfter
	 *
	 */
	@Override
	@Transactional
	public Set<TipoCuentas> findTipoCuentasByCo020femoAfter(java.util.Calendar co020femo) throws DataAccessException {

		return findTipoCuentasByCo020femoAfter(co020femo, -1, -1);
	}

	/**
	 * JPQL Query - findTipoCuentasByCo020femoAfter
	 *
	 */

	@Override
	@SuppressWarnings("unchecked")
	@Transactional
	public Set<TipoCuentas> findTipoCuentasByCo020femoAfter(java.util.Calendar co020femo, int startResult, int maxRows) throws DataAccessException {
		Query query = createNamedQuery("findTipoCuentasByCo020femoAfter", startResult, maxRows, co020femo);
		return new LinkedHashSet<TipoCuentas>(query.getResultList());
	}

	/**
	 * JPQL Query - findTipoCuentasByCo020tipoContaining
	 *
	 */
	@Override
	@Transactional
	public Set<TipoCuentas> findTipoCuentasByCo020tipoContaining(String co020tipo) throws DataAccessException {

		return findTipoCuentasByCo020tipoContaining(co020tipo, -1, -1);
	}

	/**
	 * JPQL Query - findTipoCuentasByCo020tipoContaining
	 *
	 */

	@Override
	@SuppressWarnings("unchecked")
	@Transactional
	public Set<TipoCuentas> findTipoCuentasByCo020tipoContaining(String co020tipo, int startResult, int maxRows) throws DataAccessException {
		Query query = createNamedQuery("findTipoCuentasByCo020tipoContaining", startResult, maxRows, co020tipo);
		return new LinkedHashSet<TipoCuentas>(query.getResultList());
	}

	/**
	 * JPQL Query - findTipoCuentasByCo020feadBefore
	 *
	 */
	@Override
	@Transactional
	public Set<TipoCuentas> findTipoCuentasByCo020feadBefore(java.util.Calendar co020fead) throws DataAccessException {

		return findTipoCuentasByCo020feadBefore(co020fead, -1, -1);
	}

	/**
	 * JPQL Query - findTipoCuentasByCo020feadBefore
	 *
	 */

	@Override
	@SuppressWarnings("unchecked")
	@Transactional
	public Set<TipoCuentas> findTipoCuentasByCo020feadBefore(java.util.Calendar co020fead, int startResult, int maxRows) throws DataAccessException {
		Query query = createNamedQuery("findTipoCuentasByCo020feadBefore", startResult, maxRows, co020fead);
		return new LinkedHashSet<TipoCuentas>(query.getResultList());
	}

	/**
	 * JPQL Query - findTipoCuentasByCo020loadContaining
	 *
	 */
	@Override
	@Transactional
	public Set<TipoCuentas> findTipoCuentasByCo020loadContaining(String co020load) throws DataAccessException {

		return findTipoCuentasByCo020loadContaining(co020load, -1, -1);
	}

	/**
	 * JPQL Query - findTipoCuentasByCo020loadContaining
	 *
	 */

	@Override
	@SuppressWarnings("unchecked")
	@Transactional
	public Set<TipoCuentas> findTipoCuentasByCo020loadContaining(String co020load, int startResult, int maxRows) throws DataAccessException {
		Query query = createNamedQuery("findTipoCuentasByCo020loadContaining", startResult, maxRows, co020load);
		return new LinkedHashSet<TipoCuentas>(query.getResultList());
	}

	/**
	 * JPQL Query - findTipoCuentasByCo020clcuContaining
	 *
	 */
	@Override
	@Transactional
	public Set<TipoCuentas> findTipoCuentasByCo020clcuContaining(String co020clcu) throws DataAccessException {

		return findTipoCuentasByCo020clcuContaining(co020clcu, -1, -1);
	}

	/**
	 * JPQL Query - findTipoCuentasByCo020clcuContaining
	 *
	 */

	@Override
	@SuppressWarnings("unchecked")
	@Transactional
	public Set<TipoCuentas> findTipoCuentasByCo020clcuContaining(String co020clcu, int startResult, int maxRows) throws DataAccessException {
		Query query = createNamedQuery("findTipoCuentasByCo020clcuContaining", startResult, maxRows, co020clcu);
		return new LinkedHashSet<TipoCuentas>(query.getResultList());
	}

	/**
	 * JPQL Query - findTipoCuentasByCo020desc
	 *
	 */
	@Override
	@Transactional
	public Set<TipoCuentas> findTipoCuentasByCo020desc(String co020desc) throws DataAccessException {

		return findTipoCuentasByCo020desc(co020desc, -1, -1);
	}

	/**
	 * JPQL Query - findTipoCuentasByCo020desc
	 *
	 */

	@Override
	@SuppressWarnings("unchecked")
	@Transactional
	public Set<TipoCuentas> findTipoCuentasByCo020desc(String co020desc, int startResult, int maxRows) throws DataAccessException {
		Query query = createNamedQuery("findTipoCuentasByCo020desc", startResult, maxRows, co020desc);
		return new LinkedHashSet<TipoCuentas>(query.getResultList());
	}

	/**
	 * JPQL Query - findTipoCuentasByCo020femoBefore
	 *
	 */
	@Override
	@Transactional
	public Set<TipoCuentas> findTipoCuentasByCo020femoBefore(java.util.Calendar co020femo) throws DataAccessException {

		return findTipoCuentasByCo020femoBefore(co020femo, -1, -1);
	}

	/**
	 * JPQL Query - findTipoCuentasByCo020femoBefore
	 *
	 */

	@Override
	@SuppressWarnings("unchecked")
	@Transactional
	public Set<TipoCuentas> findTipoCuentasByCo020femoBefore(java.util.Calendar co020femo, int startResult, int maxRows) throws DataAccessException {
		Query query = createNamedQuery("findTipoCuentasByCo020femoBefore", startResult, maxRows, co020femo);
		return new LinkedHashSet<TipoCuentas>(query.getResultList());
	}

	/**
	 * Used to determine whether or not to merge the entity or persist the entity when calling Store
	 * @see store
	 * 
	 *
	 */
	@Override
	public boolean canBeMerged(TipoCuentas entity) {
		return true;
	}
}
